package com.ruoyi.common.utils.file;

import com.ruoyi.common.config.TencentCosConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 文件路径工具类，用于修复错误的文件路径格式
 */
@Component
public class FilePathUtils {

    private static TencentCosConfig cosConfig;
    
    @Autowired
    public void setCosConfig(TencentCosConfig cosConfig) {
        FilePathUtils.cosConfig = cosConfig;
    }

    /**
     * 修复错误的文件路径格式
     * 示例：将 /profile/zhinengsuo-1305759786.cos.ap-guangzhou.myqcloud.com//profile/2025/03/15/file.png
     * 修复为 /profile/2025/03/15/file.png
     *
     * @param incorrectPath 错误的文件路径
     * @return 修复后的文件路径
     */
    public static String fixFilePath(String incorrectPath) {
        if (StringUtils.isEmpty(incorrectPath)) {
            return incorrectPath;
        }
        
        // 1. 处理重复的 profile 前缀
        if (StringUtils.countMatches(incorrectPath, Constants.RESOURCE_PREFIX) > 1) {
            // 查找最后一个 /profile/
            int lastProfileIndex = incorrectPath.lastIndexOf(Constants.RESOURCE_PREFIX);
            // 只保留最后一个 /profile/ 后面的部分
            incorrectPath = incorrectPath.substring(lastProfileIndex);
        }
        
        // 2. 处理双斜杠问题
        incorrectPath = incorrectPath.replace("//", "/");
        
        // 3. 确保路径以 /profile/ 开头
        if (!incorrectPath.startsWith(Constants.RESOURCE_PREFIX)) {
            incorrectPath = Constants.RESOURCE_PREFIX + "/" + 
                    (incorrectPath.startsWith("/") ? incorrectPath.substring(1) : incorrectPath);
        }
        
        return incorrectPath;
    }
    
    /**
     * 获取腾讯云COS的域名地址
     * 
     * @return 腾讯云COS域名
     */
    public static String getCosDomain() {
        if (cosConfig != null && StringUtils.isNotEmpty(cosConfig.getDomain())) {
            return cosConfig.getDomain();
        }
        return "";
    }
} 